﻿//Sistemas desenvolvidos por Iágo Campos e ...
//Bibliotécas do Sistema
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sistema.Modelo;
using Sistema.Dao;
using System.Data.SqlClient;
using Sistema.Visao.Pessoa.Estado;//Da acesso ao form estado
using Sistema.Visao.Pessoa.Cliente;//Da acesso ao form Cliente

namespace Sistema.Visao.Pessoa.Pais
{//inicia o namespace
    public partial class formPais : Form
    {//inicia o formPais
        public formPais()
        {
         
            InitializeComponent();
            }
        //construtor para dar acesso ao form Estado 
        public formPais(dataEstado estado, int opcao)
        {
            InitializeComponent();
            formCadEstado = estado;
            op = opcao;
        }
        //contrutor para dar acesso ao form Cliente 
        public formPais(formCliente fisico, int opcao)
        {
            InitializeComponent();
            formfisico = fisico;
            op = opcao;//Variavel para definir certas funçoes do form
            clienteop = true;//definir o tipo de cliente que vai receber o pais
        }

        public formPais(int opcao)
        {
            InitializeComponent();
            op = opcao;
        }
        //Variáveis Globais
        dataEstado formCadEstado;
        formCliente formfisico;
        Boolean clienteop;
        PaisMod mod = new PaisMod();// variavel da classe modelo
        PaisDao dao = new PaisDao();// variavel da classe dao
        string pais;
        int codigo, op;
        Boolean tipo;//Usado para definir qual tipo de opção sera carregada no forme de datapais, Cadastro ou alteração
        int linha;//variavel inteira para guardar a linha que esta selecionada no grid


        
        //pega dados do grid e manda para variaveis locais
        public void pegadados()
        {

            if (dgPais.RowCount == 0)
            {
                //se a tabela estiver vazia exibir label com msg e desabilitar botoes
                cbTipoPesquisa.Enabled = false;
                tbCampoPesquisar.Enabled = false;
                btPesquisar.Enabled = false;
                btAdicionar.Enabled = false;
                lbMsg.Visible = true;
                dgPais.Visible = false;
            }
            else
            {
                //se nao pega dados da tabela e habilita botoes
                cbTipoPesquisa.Enabled = true;
                tbCampoPesquisar.Enabled = true;
                btPesquisar.Enabled = true;
                btAdicionar.Enabled = true;
                dgPais.Visible = true;
                lbMsg.Visible = false;
                linha = dgPais.CurrentRow.Index;
                pais = dgPais.Rows[linha].Cells[1].Value.ToString();
                codigo = Convert.ToInt16(dgPais.Rows[linha].Cells[0].Value.ToString());//pegando codigo para realizara alteraçao
            }
        }
        //MEtodo para carregar o data Grid atraves de conexão com o banco utilizando a camada dao
        public void AtualizarGrid(int Selecao, String Busca) 
        {//abre chave AtualizaGrid
            //metodo para pegar os valores e seta-los no grid
            dao.SelecionarPais(Busca, Selecao);
            SqlDataAdapter i = dao.getSelect();
            DataTable da = new DataTable();
            i.Fill(da);
            dgPais.DataSource = da;
            //altera o nome dos campos da coluna
            dgPais.Columns[0].HeaderText = "Código";
            dgPais.Columns[1].HeaderText = "Cidade";
            //define o tamanho das colunas do grid
            dgPais.Columns[0].Width = 50;
            dgPais.Columns[1].Width = 500;
            //colocando os valores da coluna data_de_cadastro invisivel no grid
            dgPais.Columns[2].Visible = false;
        }//Fecha chave AtualizaGrid
      
        private void formPais_Load(object sender, EventArgs e)
        {//abre form load
            //se a opção for igual a 1 ele vai carregar os dados no grid e não vai carregar o botão adicionar
            if (op == 1)
            {//abri if
                AtualizarGrid(0, "");
                pegadados();
                cbTipoPesquisa.SelectedIndex = 0;
                btAdicionar.Visible = false;
            }//fecha if
                //se não ele habilita o botão de adicionar
            else
            {//abri else
                AtualizarGrid(0, "");
                pegadados();
                cbTipoPesquisa.SelectedIndex = 0;
                btAdicionar.Visible = true;
            }//feecha else
            }//fechar form load

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            tipo = true;//tipo recebe true para informar que a opção é cadastro
            dataPais vai = new dataPais(this,tipo);//passa para o form datapais o tipo cadastro
            vai.ShowDialog();
        }

        

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            tipo = false;//tipo recebe false para informar que a opção é alteração
            dataPais vai = new dataPais(this, pais, tipo, codigo);//passa para o form datapais o tipo que é alteração e os dados para serem setados no outro form
            vai.ShowDialog();
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
           // pega dados quando o usuario clica no item da grid
            pegadados();
        }
       //botão confere qual combo esta selecionado para decidir o tipo de pesquisa
        private void button1_Click(object sender, EventArgs e)
        {
           
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(1, tbCampoPesquisar.Text);
                }
                else if(cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(2, tbCampoPesquisar.Text);
                }
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(3, tbCampoPesquisar.Text);
                }

          
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //envia os valores selecionado da tabela para o form de cadastro de estado
                formCadEstado.tbPais.Text = pais;
                formCadEstado.auxcodigopais = codigo;
                this.Hide();
                
        }

       

        private void button3_Click(object sender, EventArgs e)
        {
            //volta para o menu
            this.Hide();
        }
    }//fecha o formPais
}//fecha o namespace
